import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
import java.util.Map;

import javax.jms.Message;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.xml.sax.InputSource;

import com.thoughtworks.xstream.XStream;

public class RevAdaptor {
	private final Log log = LogFactory.getLog(RevAdaptor.class);
	private String workDir;
	private SqlSessionFactory sqlSessionFactory;
	InputStream inputStream = null;

	public void init() throws IOException {
		//sql mapper xml의 경로를 지정한다.
		String resource = "config/SqlSessionConfig.xml";
		inputStream = Resources.getResourceAsStream(resource);
		sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream,
				"development2");
		SqlSession session = sqlSessionFactory.openSession();
		
		//추출된 xml파일이 있는 문서의 경로를 지정
		setWorkDir("D:\\temp\\snd\\send\\practice.xml");
		//해당 xml 파일을 읽어온다.
		File file = new File(getWorkDir());
		FileReader reader = new FileReader(file);
		InputSource inputSource = new InputSource(reader);
		//encording을 utf-8로 설정
		inputSource.setEncoding("utf-8");
		//XStream 객체를 생성해서 xml파일을 List<Map<String, String>>에 담는다.
		XStream xStream = new XStream();
		List<Map<String, String>> fromXml = (List<Map<String, String>>) xStream
				.fromXML(file);
		
		int insertOk = session.insert("practice.insert01", fromXml);
		//commit 한다. 안하면 db에 들어가지 않는다.
		session.commit();
		//제대로 db에 insert가 되었는지 확인 ex)insert가 안되면 0, 제대로 들어가면 데이터 개수에 따라 숫자 콘솔에 출력
		System.out.println("insert OK : " + insertOk);
	}

	public String getWorkDir() {
		return workDir;
	}

	public void setWorkDir(String workDir) {
		this.workDir = workDir;
	}

}
